package com.ayf.payment.game.api.service;

import com.ayf.payment.game.api.dto.MerchantConfigDTO;
import com.ayf.payment.game.api.dto.criteria.PartitionCriteria;
import com.ayf.payment.game.api.dto.criteria.SettleConfigCriteria;
import com.ayf.payment.game.api.dto.criteria.SettleCycleCriteria;
import com.ayf.payment.game.api.dto.platform.SettleConfigDTO;
import com.ayf.payment.game.api.entity.MerchantConfig;
import org.springframework.transaction.annotation.Transactional;


public interface MerchantConfigService {

    /**
     * 根据商户号查询出商户配置信息
     *
     * @param merchantId
     * @return
     */
    MerchantConfig selectOne(Integer merchantId);

    MerchantConfigDTO getMerchantConfigDTO(Integer merchantId);

    /**
     * 根据商户号更新客服QQ
     *
     * @param merchantConfig
     * @return
     */
    boolean updateQQ(MerchantConfig merchantConfig);

    /**
     * 更新玩家积分状态
     *
     * @param merchantConfig
     * @return
     */
    boolean updatePlayerIntegralStatus(MerchantConfig merchantConfig);

    boolean updatePlayerIntegralQq(MerchantConfig merchantConfig);

    /**
     * 根据商户号更新留言箱状态
     *
     * @param merchantConfig
     * @return
     */
    boolean updateMessageBoxStatus(MerchantConfig merchantConfig);

    /**
     * 根据商户号更新最小充值金额
     *
     * @param merchantConfig
     * @return
     */
    boolean updateMinRechargeAmount(MerchantConfig merchantConfig);

    /**
     * 更改商户费率标识id
     *
     * @param merchantConfig
     * @return
     */
    boolean updateSettleIdentificationId(MerchantConfig merchantConfig);

    /**
     * 查询出商户的配置信息
     *
     * @param partitionId
     * @return
     */
    SettleConfigDTO selectConfigByPartitionId(String partitionId);

    /**
     * 更改商户结算周期
     *
     * @param settleCycle
     * @return
     */
    boolean updateSettleCycle(SettleCycleCriteria settleCycle);

    /**
     * 更改商户结算类型
     *
     * @param settleConfigCriteria
     * @return
     */
    boolean updateSettleType(SettleConfigCriteria settleConfigCriteria);

  /**
     * 更改商户代付状态
     *
     * @param settleConfigCriteria
     * @return
     */
  @Transactional
  boolean updatePayStatus(SettleConfigCriteria settleConfigCriteria);

    /**
     * 查看留言箱状态
     *
     * @param partitionCriteria
     * @return
     */
    MerchantConfig selectMsgStatus(PartitionCriteria partitionCriteria);

    MerchantConfigDTO getMerchantConfigByPartitionId(String partitionId);

    boolean updateSkin(MerchantConfig merchantConfig);

    MerchantConfigDTO getConfigByUniqueId(String uniqueId);

    boolean updateMerchantConfig(MerchantConfigDTO merchantConfigDTO);
}

